Singletons können ein wertvolles Hilfsmittel zur Steigerung der Performance von .NET-Programmen darstellen, vor allem dann, wenn jeweils nur ein physisches Objekt vorhanden ist. Beim herkömmlichen Programmieren würde man jedes Mal, wenn man eine bestimmte Instanz eines Objekts benötigt, eine Klasse als ein Objekt instanziieren. So würde man beispielsweise ein eigenes Produkt „12“ erstellen, wenn man Zugriff auf die Daten über Produkt „12“ benötigt.
In vielen Fällen, zum Beispiel bei einem Produktkatalog, ist jedoch eine einzelne Persistenz des Objekts in der Datenbank vorhanden, so dass jeweils nur eine Instanz des Objekts erforderlich ist. Nachfolgend soll aufgezeigt werden, wie man Objekte in Singletons konvertiert, um so die Performance und Ressourcennutzung innerhalb des .NET-Entwicklungs-Frameworks zu verbessern.
Das Konstruktor-Problem
Mit dem Aufkommen der objektorientierten Programmierung entstand auch der Ansatz, einen Konstruktor für eine Klasse zu verwenden. Das Objekt muss die Möglichkeit haben, sich selbst zu initialisieren, bevor es an das aufrufende Programm zurückgegeben wird. Dank dieses Vorgangs können interne Datenstrukturen gefüllt und konfiguriert werden.
Das Problem dabei ist nur, dass der Compiler oder die Runtime-Umgebung bereits Speicherplatz für das Objekt zugewiesen haben. Im Grunde wurde das neue Objekt also bereits erstellt und müsste nun nur noch konfiguriert werden.
Aus diesem Grund kann man keinen Konstruktor zusammen mit einem Singleton benutzen. Das Objekt wurde zum Zeitpunkt des Code-Aufrufs bereits teilweise instanziiert und somit kann für die Entwicklung kein Konstruktor eingesetzt werden. Der Konstruktor muss geschützt, privat oder intern eingerichtet werden. Danach kann man den Konstruktor von innerhalb der Klasse aus aufrufen, aber nicht direkt von außen.
Es reicht, einen einzigen Konstruktor zu erstellen, damit der standardmäßige Konstruktor nicht erstellt wird, selbst wenn der selbst erstellte Konstruktor als geschützt, privat oder intern markiert wurde. Auf diese Weise wird gewährleistet, dass kein Code außerhalb des festgelegten Rahmens das Objekt erstellen kann.
Die Rolle der statischen Methoden
Wenn der Entwickler den Konstruktor nicht benutzen kann, kann er auch kein eigenes Objekt erstellen, wodurch die Verwendung des Objekts erschwert wird. Die Nutzung von Elementen, die man nicht erstellen kann, ist sehr schwierig, weshalb man hier auf statische Methoden zurückgreifen sollte. Da diese direkt aus der Klasse heraus operieren, ist keine Instanz erforderlich. Dadurch kann der Entwickler die Methoden aufrufen, bevor er über eine Instanz der Klasse verfügt.
Die Rolle der statischen Methoden besteht darin, im internen Cache nachzusehen, ob die geforderte Instanz des Objekts existiert. Wenn ja, erhält das aufrufende Programm eine Referenz auf diese Instanz. Ist die geforderte Instanz dagegen nicht vorhanden, wird sie automatisch durch die statische Methode erstellt und im internen Cache gespeichert, worauf die Methode eine Referenz auf das Objekt zurückgibt.
Neueste Kommentare
Noch keine Kommentare zu .NET beschleunigen durch Singleton-Objekte
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.